// 迭代器: Iterator, 指定Item类型并实现next方法即可
//  iter()      通过引用获取元素
//  iter_mut()  获取元素的可变引用
//  into_iter() 获取元素的所有权，并在完全迭代后使用实际类型（原始集合将无法再访问）

// 除了 Vec 之外， 还有很多类型在标准库中实现了 Iterator 特征， 例如 HashMap、 BtreeMap 及 VecDeque。
use std::ops::Range;
fn main() {
    // 实现Iterator特征的类型可以在for循环中使用
    for i in 0..20 {
        todo!()
    }

    // 上述语法糖可以转换为以下形式
    let a = Range { start: 0, end: 20 };
    while let Some(i) = a.next() {
        todo!()
    }

    for i in primes.iter() {
        println!("{}", i)
    }
}